home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib11.dsk
/
TOUGH TFILE REFORMATTER.bas
< prev
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
90 lines
10 REM *******************************
11 REM * TOUGH TFILE REFORMATTER *
12 REM * BY HAL CLARK *
13 REM * COPYRIGHT (C) 1982 *
14 REM * BY MICRO-SPARC INC *
15 REM * LINCOLN, MA. 01773 *
16 REM *******************************
20 REM
80 HOME : VTAB 6
90 CR$ = CHR$(13): REM CARRIAGE RETURN
100 D$ = CHR$(4): REM CTRL D
110 SP$ = " ": REM SPACE
120 RR = 0:PS = 0: REM REQUIRED RETURN AND PREV SPACE FLAGS
130 DIM PG$(200)
140 PRINT
150 PRINT : PRINT "ENTER NAME OF FILE TO REFORMAT ": INPUT "";NM$
160 IF NM$ = "" THEN PRINT D$;"CATALOG": GOTO 150
165 HOME
170 PRINT D$;"OPENTFILE-";NM$
180 PRINT D$;"READTFILE-";NM$
190 INPUT TL: REM TOTAL INPUT LINES
200 NL = TL: REM # OF SAVED LINES
210 INPUT LL: REM LING LENGTH
220 INPUT TV: REM TAB VALUE
230 PRINT D$
240 PRINT "CURRENT LINE LENGTH -";LL -1
250 INPUT "ENTER NEW LINE LENGTH =";PW
260 HOME : PRINT : PRINT TAB( 14);"REFORMATTING"
270 PRINT TAB( (40 -(6 + LEN(NM$))/2);"TFILE-";NM$: PRINT : PRINT
280 PRINT TAB( 14);"LINE LENGTH"
290 PRINT TAB( 10);"OLD "; TAB( 25);"NEW"
300 PRINT TAB( 10);LL -1; TAB( 25);PW: PRINT
310 PRINT : PRINT TAB( 12);"PROCESSING LINE"
320 PRINT TAB( 10);"TOTAL"; TAB( 20);"INPUT "; TAB( 30);"OUTPUT": PRINT TAB( 10);TL: PRINT
330 PRINT : PRINT "PRESS 'A' TO ABORT"
340 PS = 0:PH = 0: REM PREV SPACE AND HYPHEN
350 I = 1:K = 1:PG$(I) = "": GOSUB 670
360 REM MAIN INPUT LOOP
370 IF J = 1 AND K = 1 THEN TB = 1
380 CC$ = MOD$(CL$,J,1):J = J +1
390 IF PH = 1 AND CC$ = SP$ THEN GOSUB 660: GOTO 480
400 IF PS = 1 AND CC$ = SP$ THEN 470
410 IF CC$ = SP$ THEN LS = K
420 IF TB = 1 AND CC$ = SP$ THEN 460
430 TB = 0
440 PH = 0: IF CC$ = "-" THEN PH = 1
450 PS = 0: IF CC$ = SP$ THEN PS = 1
460 PG$(I) = PG$(I) +CC$:K = K +1
470 REM
480 IF J < = CL THEN 520
490 IF RR = 1 THEN GOSUB 670: GOTO 530
500 IF PH = 1 THEN GOSUB 660: GOSUB 670: GOTO 520
510 PG$(I) = PG$(I) +SP$:LS = K:K = K +1: GOSUB 670
520 IF K < = PW THEN 630
530 I = I +1:PG$(I) = "":K = K -LS
540 IF K <2 THEN K = 1: GOTO 570
550 PG$(I) = RIGHT$(PG$(I -1),K -1)
560 PG$(I -1) = LEFT$(PG$(I -1),LS)
570 LS = 1:PS = 0:PH = 0
580 VTAB (19): HTAB (30): PRINT I -1
590 IF PEEK( -16384) <128 THEN 630: REM NO KEY WAITING
600 GET A$: POKE -16368,0: IF A$ < >"A" THEN 630
610 HOME : INPUT "SAVE OUTPUT? ";A$: IF A$ = "Y" THEN 750
620 GOTO 810
630 IF NL <0 THEN 750
640 GOTO 360
650 REM HYPHEN DROP SUBROUTINE
660 PG$(I) = LEFT$(PG$(I), LEN(PG$(I)) -1):K = K -1:PH = 0: RETURN
670 REM GET LINE SUBROUTINE
680 PRINT D$;"READ TFILE-";NM$
690 INPUT CL$: REM CURRENT LINE
700 CL = LEN(CL$):RR = 0: REM RECQUIRE RETURN
710 IF CL < <LL -1 THEN RR = 1: REM REQUIRED RETURN NEEDED
720 PRINT D$:J = 1
730 VTAB (19): HTAB (20): PRINT TL -NL
740 NL = NL -1
750 PRINT D$;"OPEN TFILE-NEW ";NM$
760 PRINT D$;"WRITE TFILE-NEW ";NM$
770 PRINT I -1: PRINT PW +1: PRINT TV
780 FOR J = 1 TO I
790 PRINT CHR$(34);PG$(J)
800 NEXT J
810 PRINT D$;"CLOSE"
820 PRINT D$
830 HOME
840 PRINT "REFORMAT ANOTHER DOCUMENT? "
850 INPUT " (Y= YES, N=NO) ";A$
860 IF A$ = "Y" THEN 20
870 TEXT : HOME
880 PRINT "END OF REFORMATTING.": END